package com.mingyuean.demo.spring.factory.support;

import com.mingyuean.demo.spring.factory.config.SingletonBeanRegistry;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * @author MingYueAn
 * <p>  默认单例bean注册
 * <p>  2023/3/19 15:23
 * @version: 1.0
 */
public class DefaultSingletonBeanRegistry implements SingletonBeanRegistry {

    /**
     * singletonObjectMap用于存储单例bean实例对象的Map，
     * 使用ConcurrentHashMap保证线程安全性
     */
    public static final Map<String, Object> singletonObjectMap = new ConcurrentHashMap<>();

    /**
     * 注册单例bean实例对象
     *
     * @param beanName bean的名称
     * @param object   注册的bean实例对象
     */
    @Override
    public void registrySingleton(String beanName, Object object) {
        singletonObjectMap.put(beanName, object);
    }

    /**
     * 根据bean的名称获取单例bean实例对象
     *
     * @param beanName bean的名称
     * @return 返回单例bean实例对象。如果不存在，则返回null。
     */
    @Override
    public Object getSingleton(String beanName) {
        return singletonObjectMap.get(beanName);
    }
}
